package com.ltkj.baseplatform.util;

import com.ltkj.common.core.domain.R;
import com.ltkj.common.core.web.domain.AjaxResult;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.faceid.v20180301.FaceidClient;
import com.tencentcloudapi.faceid.v20180301.models.IdCardVerificationRequest;
import com.tencentcloudapi.faceid.v20180301.models.IdCardVerificationResponse;
import org.apache.ibatis.annotations.Param;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;

/**
 * @Author: chenzeen
 * @Date: 2023/09/04
 * @Description:
 */
public class IdCardUtil {
    private static final Logger log = LoggerFactory.getLogger(IdCardUtil.class);

    public AjaxResult IdCardVerification(String idCard, String name,String secretId, String secretKey) {
        // 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey，此处还需注意密钥对的保密
        // 代码泄露可能会导致 SecretId 和 SecretKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考，建议采用更安全的方式来使用密钥，请参见：https://cloud.tencent.com/document/product/1278/85305
        // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
        Credential cred = new Credential(secretId, secretKey);
        // 实例化一个http选项，可选的，没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint("faceid.tencentcloudapi.com");
        // 实例化一个client选项，可选的，没有特殊需求可以跳过
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        // 实例化要请求产品的client对象,clientProfile是可选的
        FaceidClient client = new FaceidClient(cred, "", clientProfile);
        // 实例化一个请求对象,每个接口都会对应一个request对象
        IdCardVerificationRequest req = new IdCardVerificationRequest();
        req.setIdCard(idCard);
        req.setName(name);

        try {
            // 返回的resp是一个IdCardVerificationResponse的实例，与请求对象对应
            IdCardVerificationResponse resp = client.IdCardVerification(req);
            log.debug("身份证验证请求参数:"+req.getIdCard()+" , "+req.getName());
            log.debug("身份证验证返回结果:"+IdCardVerificationResponse.toJsonString(resp));
            if("0".equals(resp.getResult())) {
                return AjaxResult.success(resp.getDescription());
            } else {
                log.error("身份证验证失败:请求参数="+req.getIdCard()+" , "+req.getName());
                log.error("身份证验证失败:返回结果="+IdCardVerificationResponse.toJsonString(resp));
                return AjaxResult.error(resp.getDescription());
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("调用接口失败"+e.getMessage());
            return AjaxResult.error("调用验证失败!");

        }
    }
}
